package name;

import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Random;

public class RandomName {

	private static String getSurname(String familyName, String compoundSurname) {
		double p = Math.random();
		String surname;
		if (p < 0.99) {
			surname = familyName;
			int index = (int) (Math.random() * surname.length());
			surname = surname.substring(index, index + 1);
		} else {
			surname = compoundSurname;
			int index = (int) (Math.random() * surname.length());
			index = index / 2 * 2;
			surname = surname.substring(index, index + 2);
		}
		return surname;
	}

	private static String getFirstName() {
		if (Math.random() < 0.5) {
			return getChinese(new Date().getTime());
		} else {
			return getChinese(new Date().getTime())
					+ getChinese(new Date().getTime());
		}
	}

	private static String getTopFirstName() {
		String man = "ΰ�����㿡��ǿ��ƽ�����Ļ�������������־��������ɽ�ʲ���������Ԫȫ��ʤѧ��ŷ�������" +
				"��ɱ�˳���ӽ��β�ɿ��ǹ���ﰲ����ï�����м�ͱ벩���Ⱦ�����׳��˼Ⱥ���İ�����ܹ����ƺ�" +
				"��������ԣ���ܽ���������ǫ�����֮�ֺ��ʲ����������������ά�������������㳿ӯ߽ʿ�Խ���������" +
				"����ʱ̩ʢ��衾�ڲ�����ŷ纽��";
		String woman = "���Ӣ���������Ⱦ���������֥��Ƽ�����ҷ���ʴ��������÷���������滷ѩ�ٰ���ϼ��" +
				"��ݺ�����ෲܑܯ߽������������Ҷ�����������ɺɯ������ٻ�������ӱ¶������������Ǻɵ�" +
				"��ü������ޱݼ���Է�ܰ�������԰��ӽ�������ع���ѱ�ˬ������ϣ����Ʈ���������������������" +
				"��ܿ�ƺ������˿ɼ���Ӱ��֦˼��";
		String people = man + woman;
		int index = (int) (Math.random() * people.length());
		int ext = Math.random() < 0.5 ? 1 : 2;
		return people.substring(index, index + ext);
	}

	private static String getChinese(long seed) {
		String str = null;
		int highPos, lowPos;
		seed = new Date().getTime() + seed;
		Random random = new Random(seed);
		highPos = (176 + Math.abs(random.nextInt(39)));
		lowPos = 161 + Math.abs(random.nextInt(93));

		byte[] b = new byte[2];
		b[0] = (new Integer(highPos)).byteValue();
		b[1] = (new Integer(lowPos)).byteValue();
		try {
			str = new String(b, "GB2312");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return str;
	}

	public static void main(String[] args) {
		String familyName = "��Ǯ��������֣��������������������������ʩ�ſײ��ϻ���κ�ս���л����"
				+ "��ˮ��������˸��ɷ�����³Τ������ﻨ������Ԭ��ۺ��ʷ�Ʒ����Ѧ�׺����������ޱϺ���"
				+ "����ʱ��Ƥ���뿵����Ԫ������ƽ�ƺ�������Ҧ��տ����ë����ױ���갼Ʒ�ɴ�̸��é���ܼ�����"
				+ "��ף������������ϯ����ǿ��·¦Σ��ͯ�չ�÷ʢ�ֵ�����������Ĳ��﷮���������֧���ù�¬Ī"
				+ "�������Ѹɽ�Ӧ�ڶ����ڵ��������������ʯ�޼�ť�������ϻ���½��������춻����L�ҷ����ഢ��"
				+ "�������ɾ��θ����ڽ��͹�����ɽ�ȳ������ȫۭ�����������������ﱩ��б�������������ղ����"
				+ "Ҷ��˾��۬�輻��ӡ�ް׻���ۢ�Ӷ����̼���׿�����ɳ������d���ܲ�˫��ݷ����̷�����̼������"
				+ "Ƚ��۪Ӻ�S�ɣ���ţ��ͨ�����༽ۣ����ũ�±�ׯ�̲����ֳ�Ľ����ϰ�°��������������������"
				+ "�߾Ӻⲽ����������Ŀܹ�»�ڶ�ŷ�����εԽ��¡ʦ�������˹��������������Ǽ��Ŀ�����ɳؿ"
				+ "�����ᳲ�������㾣گ߽����Ȩ�ϸ��滸��";
		String topFamilyName = "�������������Ի��������������ֺι���������֣л���Ʒ��ڶ�Ф�̲�Ԭ���?��"
				+ "��������¬���ֶ�κѦҶ�����˶Ŵ����������ν�����ʯҦ̷�����ܽ�½�¿װ״޿�ë���ؽ�ʷ�˺���"
				+ "���������Ǯ�������׳����Ǻ�������";
		String compoundSurname = "��ٹ˾���Ϲ�ŷ���ĺ�������˶��������ʸ�ξ�ٹ���"
				+ "�̨��ұ����������ڵ���̫����������������ԯ����������ĳ���Ľ����������˾ͽ˾��"
				+ "آ��˾���붽�ӳ�����ľ���?������������ṫ���ذμй��׸���������ַ���۳Ϳ��"
				+ "�θɰ��ﶫ�����ź��ӹ麣����΢����˧�ÿ�������������������������Ĳ��٦�����Ϲ�"
				+ "ī�������갮��١�����Ը�";
		String qq = "";
		for (int i = 0; i < 10; i++) {
			qq += (int) (Math.random() * 10) + " ";
		}
		String name = getSurname(topFamilyName, compoundSurname) + getTopFirstName();
		System.out.println(name);
	}

}
